package com.intretech.tj.global.parent;

import lombok.Getter;
import lombok.extern.slf4j.Slf4j;

/**
 * 日志输出父类
 */
@Slf4j
@Getter
public abstract class OutLogParent {

    public static final String ServerStart = "服务启动中";

    public static final String ElementStart = "子服务启动完毕 ID:%s";

    public static String JSONError = "json解析失败";

    /**
     * 服务名称
     */
    protected String serverName;

    /**
     * 在构造时就写入服务名称
     */
    protected OutLogParent() {
        setServerName();
    }

    /**
     * 写入服务名称
     */
    protected abstract void setServerName();

    /**
     * 封装日志消息
     *
     * @param template 在该类中定义的模板
     * @param args     模板格式化值
     * @return 日志消息字符串
     */
    public String getMessage(String template, Object... args) {
        return serverName + "::" + template.formatted(args)
                .replace("\n", "")
                .replace("\r", "");
    }
}
